Scroll to navigation

SYSCONF(3) Linux - příručka programátora SYSCONF(3)

JMÉNO

sysconf - Získej konfigurační informace za běhu.

SYNTAXE

#include <unistd.h>

long sysconf(int name);

POPIS

POSIX dovoluje aplikaci v čase překladu, nebo běhu aplikace, testovat, zda jsou určité volby podporovány, nebo jaké jsou hodnoty těchto konfigurovatelných systémových parametrů.

V čase překladu se toto děje pomocí vložení <unistd.h> a/nebo <limits.h> a testování hodnot příslušných maker.

V čase běhu, se můžeme dotazovat na numerické hodnoty použitím funkce sysconf(). Pokud se budeme dotazovat na hodnoty, které jsou závislé na souborovém systému, je vhodné použít volání fpathconf(3) nebo pathconf(3). Pro dotazování se na hodnoty řetězců je vhodné použít confstr(3).

Hodnoty získané z těchto funkcí jsou systémové konstanty. Nemění se po dobu života procesu.

Pro jednotlivé proměnné existuje obvykle konstanta _POSIX_FOO definovaná v <unistd.h>. Pokud definované nejsou, můžeme se dotazovat v době běhu programu. Pokud je hodnota definována jako -1, potom není podporována. Pokud je definováno na hodnotu 0, pak dané funkce a hlavičky existují, nicméně musíme se dotazovat v době běhu programu, jaký stupeň podpory je k dispozici. Pokud je hodnota definována jinak než 0 nebo -1 pak je nastaveni podporováno. Obvykle hodnota (jako například 200112L) signalizuje rok a měsíc POSIXové revize popisující dané nastavení. Glibc používá hodnotu 1 k signalizace podpory, protože POSIX standard ještě stále nebyl zapracován do Glibc. Argumentem sysconf() bude _SC_FOO. Pro seznam voleb viz posixoptions(7).

Pro proměnné, nebo limity obvykle existuje konstanta _FOO, která je definována v <limits.h>, nebo _POSIC_FOO, kterou lze nalézt v <unistd.h>. Konstanta nebude definována, pokud není specifikován limit. Pokud je konstanta definována, definuje zaručenou hodnotu a dokonce může být podporována i vyšší hodnota. Pokud chce aplikace využívat hodnot, které se mohou měnit mezi jednotlivými systémy, může být volán sysconf(). Argumentem sysconf() bude _SC_FOO.

PROMĚNNÉ POSIX.1

Uvádíme jméno proměnné, jméno parametru funkce sysconf(), který je používán pro dotazování se na tuto hodnotu, a krátký popis.

Nejdříve proměnné kompatibilní s POSIX.1.

Maximální délka argumentů pro funkce z rodiny exec(3). Nesmí být méně než _POSIX_ARG_MAX(4096).
Počet simultánně běžících procesů jednoho uživatele. Nesmí být méně než _POSIX_CHILD_MAX(25).
Maximální délka hostname, která nezahrnuje ukončující null byte, tak jak jej vrací funkce gethostname(2). Nesmí být méně než _POSIX_HOST_NAME_MAX(255).
Maximální délka loginu, která zahrnuje i ukončující null byte. Nesmí být méně než _POSIX_LOGIN_NAME_MAX(9).
Počet taktů hodin za sekundu. Odpovídající proměnná je zastaralá. Samozřejmě byla nazvána CLK_TCK. (Poznámka: makro CLOCKS_PER_SEC nedává žádnou informaci: musí být rovno 1000000.)
Maximální počet souborů, které může mít proces v libovolný okamžik otevřen. Nesmí být méně než _POSIX_OPEN_MAX(20).
Velikost stránky v bytech. Nesmí být méně než 1.(Některé systémy používají proměnnou PAGE_SIZE.)
Počet opakujících se výskytů BRE povolených regexec(3) a regcomp(3). Nesmí být méně než _POSIX2_RE_DUP_MAX (255).
Maximální počet proudů, které může mít proces kdykoliv otevřen. Pokud je definován, má stejnou hodnotu jako C makro FOPEN_MAX . Nesmí být méně než _POSIX_STREAM_MAX (8).
Maximální počet symbolických linků, které jsou vidět ve jméně souboru, než se vrátí ELOOP . Nesmí být méně než _POSIX_SYMLOOP_MAX (8).
Maximální délka jména terminálu, včetně ukončujícího null bytu. Nesmí být méně než _POSIX_TTY_NAME_MAX (9).
Maximální počet bytů ve jménu časového pásma.Nesmí být méně než _POSIX_TZNAME_MAX (6).
_POSIX_VERSION - _SC_VERSION
značí měsíc a rok POSIX.1 standardu ve formátu YYYYMML ; hodnota 199009L značí revizi Září 1990.

PROMĚNNÉ POSIX.2

Dále, hodnoty POSIX.2 :

maximální hodnota obase braná jako správná v utilitě bc(1).
maximální počet prvků v poli pro utilitu bc(1).
maximální hodnota scale povolená bc(1).
maximální délka řetězce povolená bc(1).
maximální počet šířek, které mohou být přiřazeny záznamu LC_COLLATE order v definičním souboru locale.
maximální počet výrazů, které mohou být vnořeny v závorkách v expr(1).
Maximální délka vstupního řádku pro utility, jak ze standardního vstupu, tak i ze souboru.

Maximální počet opakovaných výskytů regulárního výrazu v intervalové notaci \{m,n\} ;

verze POSIX.2 standardu ve formátu YYYYMML.
jsou podporovány POSIX.2 standardy týkající se jazyka C ?
jsou podporovány POSIX.2 standardy týkající se jazyka FORTRAN ?
jsou podporovány POSIX.2 FORTRAN utility ?
_POSIX2_LOCALEDEF - POSIX2_LOCALEDEF
je možno vytvářet POSIX.2 locales pomocí locale(1).
je podporována volba POSIX.2 vývojových utilit ?

Následující hodnoty také existují, ale nejsou standard.

TP - _SC_PHYS_PAGES Počet stránek fyzické paměti. Je možné, že toto číslo bude překonáno a dojde k přetečení. TP - _SC_AVPHYS_PAGES Počet aktuálně dostupných stránek fyzické paměti. TP - _SC_NPROCESSORS_CONF Počet nakonfigurovaných procesorů. TP - _SC_NPROCESSORS_ONLN Počet dostupných online procesorů.

NÁVRATOVÁ HODNOTA

Pokud je jméno neplatné, je navrácena hodnota -1 a errno
je nastaveno na EINVAL. Jinak je vrácena hodnota systémového zdroje a errno zůstává beze změny. V případě jednotlivých voleb je navrácena pozitivní hodnota pokud je dotazované nastavení k dispozici a -1 pokud k dispozici není. V případě limit -1 znamená, že není definován žádný limit.

SPLŇUJE STANDARDY

POSIX.1-2001.

CHYBY

Je velmi těžké používat ARG_MAX protože není specifikováno, jaké množství paměti je při volání exec(3) spotřebováno uživatelskými proměnnými v prostředí.

Některé hodnoty mohou být příliš velké; nejsou vhodné k alokování paměti.

POSIX.2 ještě není standardem a proto se informace v této manuálové stránce jistě stanou předmětem změn.

DALŠÍ INFORMACE

bc(1), expr(1), getconf(1), locale(1), fpathconf(3), pathconf(3), posixoptions(7)

TIRÁŽ

Tato stránka je součástí vydání linuxových manuálových stránek verze 3.09. popis projektu a informace o způsobu oznamování chyb v dokumentaci najdete na: http://www.kernel.org/doc/man-pages/.

4.září 2009 GNU